package com.sunbeam.common.utils;

import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;

/**
 * 
 * @ClassName: DateUtils
 * @Description: TODO
 * @author AromaSunbeam lyzpoq_gmail_com
 * @date 2013-8-31 下午11:11:39
 *
 */
public class DateUtils {
	
	public static void main(String[] args){
		/*TimeHandle c=new TimeHandle();
		System.out.println(c.currentlyTime());
		System.out.println(c.currentlyTime());
		TimeHandle.showTime("201108011800");
		long l=System.currentTimeMillis();
		Date date=new Date(System.currentTimeMillis());
		System.out.println(date.toLocaleString());
		System.out.println(showApplyTime("1312849936609"));
		String s=calculateTime("201108021830","201108022030");
		System.out.println(s);
		String datestring=currentDate();
		System.out.println("datestring="+datestring+"datestring.length="+datestring.length());*/
		System.out.println(DateUtils.showHourMinute("201108051230"));
		System.out.println(DateUtils.yesterdayDate());
		System.out.println((DateUtils.getDateByFormat("20110816", "yyyyMMdd").getTime()-System.currentTimeMillis())/(1000*3600));
		
	}
	
	/**
	 * 返回当前时间
	 * @return 示例："2011年8月7日 星期日"
	 */
	public static  String currentlyTime() {
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL);
		return dateFormat.format(date);
	}
	
	/**
	 * 显示加班时间
	 * @param t 示例："201108051230"
	 * @return String 示例："08-05 12:30"
	 */
	public static String showTime(String t){
		StringBuffer bf=new StringBuffer("");
		bf.append(t.substring(4,6)).append("-").append(t.substring(6,8)).append(" ")
		.append(t.substring(8,10)).append(":").append(t.substring(10,12));
		return bf.toString();
	}
	
	/**
	 * 显示加班时间
	 * @param t 示例："201108051230"
	 * @return String 示例："08-05 12:30"
	 */
	public static String showHourMinute(String t){
		StringBuffer bf=new StringBuffer("");
		bf.append(t.substring(8,10)).append(":").append(t.substring(10,12));
		return bf.toString();
	}
	
	/**
	 * 计算加班时间
	 * @param t1
	 * @param t2
	 * @return String
	 */
	public static String calculateTime(String t1,String t2){
		int hour1=Integer.parseInt(t1.substring(8,10));
		int hour2=Integer.parseInt(t2.substring(8,10));
		int minute1=Integer.parseInt(t1.substring(10,12));
		int minute2=Integer.parseInt(t2.substring(10,12));
		int hour=0,minute=0;
			if(minute2<minute1){
				hour2--;
				minute=60+minute2-minute1;
				hour=hour2-hour1;
			}else{
				minute=minute2-minute1;
				hour=hour2-hour1;
		}
		StringBuffer bf=new StringBuffer("");
		bf.append(hour).append("个小时").append(minute).append("分钟");
		return bf.toString();
		
	}
	
	/**
	 * 计算申请时间
	 * @param l
	 * @return String 示例："8月1日 12:23"
	 */
	public static String showApplyTime(String l){
		StringBuffer bf=new StringBuffer("");
		Date date=new Date(Long.parseLong(l));
		String minute=Integer.toString(date.getMinutes());
		if(minute.length()==1){
			minute=new String(0+minute);
		}
		bf.append(date.getMonth()+1).append("月").append(date.getDate()).append("日  ").append(date.getHours()).append(":").append(minute);
		return bf.toString();
	}
	
	/**
	 * 返回当前日期
	 * @param null
	 * @return String 示例："20110801"
	 */
	public static String currentDate(){
		StringBuffer bf=new StringBuffer("");
		Date date=new Date(System.currentTimeMillis());
		String dateString=date.toLocaleString();
		String s=dateString.substring(0,dateString.length()-8);
		String[] stringArray=s.split("-");
		/*for(int i=0;i<3;i++){
			System.out.println("stringArray[i]="+stringArray[i]+"  stringArray.length[i]="+stringArray[i].length());
		}*/
		//格式化月份
		if(stringArray[1].length()==1){
			bf.append(stringArray[0]).append(0+stringArray[1]);
		}else{
			bf.append(stringArray[0]).append(stringArray[1]);
		}
		//格式化日期
		if(stringArray[2].length()==1){
			bf.append(0+stringArray[2]);
		}else{
			bf.append(stringArray[2]);
		}
		//格式化小时
		//格式化分钟
	   return bf.toString().trim();
	}
	
	/**
	 * 返回前一天日期
	 * @param null
	 * @return String 示例："20110801"
	 */
	public static String yesterdayDate(){
		StringBuffer bf=new StringBuffer("");
		Date date=new Date(System.currentTimeMillis()-86400000l);
		String dateString=date.toLocaleString();
		String s=dateString.substring(0,dateString.length()-8);
		String[] stringArray=s.split("-");
		//格式化月份
		if(stringArray[1].length()==1){
			bf.append(stringArray[0]).append(0+stringArray[1]);
		}else{
			bf.append(stringArray[0]).append(stringArray[1]);
		}
		//格式化日期
		if(stringArray[2].length()==1){
			bf.append(0+stringArray[2]);
		}else{
			bf.append(stringArray[2]);
		}
		//格式化小时
		//格式化分钟
	   return bf.toString().trim();
	}

	
	/**
	 * 判断当点是否为工作日
	 * @param null
	 * @return boolean 工作日为false，周末为true
	 */
	public static boolean checkWeek(){
		boolean bool=false;
		String date=DateUtils.currentlyTime();
		String week=date.substring(date.length()-3,date.length());
		if(week.equals("星期六")||week.equals("星期日")){
			bool=true;	
		}	
		return bool;
	}
	
	/**
	 * 计算当前星期几
	 * @param null
     * @return  String 示例：星期一 
	 */
	public static String getWeek(){
		String date=DateUtils.currentlyTime();
		String week=date.substring(date.length()-3,date.length());
		return week;
	}
	
	/** 
     * 将日期字符串装换成日期 
     * @param strDate   日期支持年月日 示例:yyyyMMdd(20110801) 
     * @return  1970年1月1日器日期的毫秒数 
     */  
	public static long getDateTime(String strDate) {  
        return getDateByFormat(strDate, "yyyyMMdd").getTime();  
    }
	public static Date getDateByFormat(String strDate, String format) {  
        SimpleDateFormat sdf = new SimpleDateFormat(format);  
        try{  
            return (sdf.parse(strDate));  
        }catch (Exception e){  
            return null;  
        }  
    }  
}
